const fs = require('fs')
const path = require('path')
const tinify = require('tinify')

tinify.key = global.config.Tinify.apiKey

//解析需要遍历的文件夹
// const filePath = path.resolve(`${process.cwd()}/static/unTinify`)
// fileDisplay(filePath)

/**
 * 文件遍历方法
 * @param filePath 需要遍历的文件路径
 */
const fileDisplay = function (filePath, filePathOutput){
    //根据文件路径读取文件，返回文件列表
    fs.readdir(filePath, function(err, files) {
        if (err) {
            console.warn(err)
        } else {
            //遍历读取到的文件列表
            files.forEach(function (filename) {
                console.log(filename)
                //获取当前文件的绝对路径
                var filedir = path.join(filePath, filename)
                //根据文件路径获取文件信息，返回一个fs.Stats对象
                fs.stat(filedir, function (eror,stats) {
                    if (eror) {
                        console.warn('获取文件stats失败')
                    } else {
                        var isFile = stats.isFile() // 是文件
                        var isDir = stats.isDirectory() // 是文件夹
                        if (isFile) {
                            console.log(filedir)
                            // 压缩图片
                            setTimeout(() => {
                                tinify.fromFile(filedir).toFile(path.join(filePathOutput, filename))
                            }, 0)
                        }
                        if (isDir) {
                            fileDisplay(filedir) // 递归，如果是文件夹，就继续遍历该文件夹下面的文件
                        }
                    }
                })
            })
            deleteFolder(filePath)
        }
    })
}

// 删除指定文件夹的下东西
const deleteFolder = function (path) {
    var files = [];
    if (fs.existsSync(path)) {
        if (fs.statSync(path).isDirectory()) {
            files = fs.readdirSync(path)
            files.forEach(function (file, index) {
                var curPath = path + "/" + file
                if (fs.statSync(curPath).isDirectory()) {
                    deleteFolder(curPath)
                } else {
                    fs.unlinkSync(curPath)
                }
            })
            // fs.rmdirSync(path)
        }
        // else {
        //   fs.unlinkSync(path)
        // }
    }
}

module.exports = {
    fileDisplay,
    deleteFolder
}
